package com.zjsru.oneDay;

import java.util.ArrayList;
import java.util.List;

/**
 * 2900. 最长相邻不相等子序列 I
 * @Author: cookLee
 * @Date: 2025-05-15 
 */
public class GetLongestSubsequence {

    /**
     * 主
     * \
     * 输入：words = ["e","a","b"], groups = [0,0,1]
     * 输出：["e","b"]
     * 解释：一个可行的子序列是 [0,2] ，因为 groups[0] != groups[2] 。
     * 所以一个可行的答案是 [words[0],words[2]] = ["e","b"] 。
     * 另一个可行的子序列是 [1,2] ，因为 groups[1] != groups[2] 。
     * 得到答案为 [words[1],words[2]] = ["a","b"] 。
     * 这也是一个可行的答案。
     * 符合题意的最长子序列的长度为 2 。
     * \
     * @param args args
     */
    public static void main(String[] args) {
        GetLongestSubsequence getLongestSubsequence = new GetLongestSubsequence();
        System.out.println(getLongestSubsequence.getLongestSubsequence(new String[]{"e","a","b"}, new int[]{0,0,1}));
    }

    public List<String> getLongestSubsequence(String[] words, int[] groups) {
        List<Integer> currInt = new ArrayList<>();
        //贪心，按照0，1来分组，可数组中相邻元素相同的部分去掉，剩余的元素即为最长且不相邻的子序列
        for (int i = 0; i < words.length; i++) {
            if (i == 0 || groups[i - 1] != groups[i]) {
                currInt.add(i);
            }
        }
        List<String> ans = new ArrayList<>();
        for (Integer curr : currInt) {
            ans.add(words[curr]);
        }
        return ans;
    }

}
